﻿using System;
using System.Collections.Generic;
using System.Web.UI.WebControls;
using Campeonato.Common.BLL;
using Campeonato.Model;

namespace PESWeb.Pages.Jogos
{
    public partial class JogoAoVivo : System.Web.UI.Page
    {
        public long PartidaID { get { return (long)Session["PartidaID"]; } set { Session["PartidaID"] = value; } }

        protected void Page_Load(object _sender, EventArgs _e)
        {
            if (IsPostBack) return;

            string idPartida = Request.Params["id"];

            if (string.IsNullOrEmpty(idPartida)) return;

            long partidaID;

            if(!long.TryParse(idPartida, out partidaID)) return;

            PartidaID = partidaID;

            string userAgent = Request.UserAgent;

            if (!string.IsNullOrEmpty(userAgent) &&
                ((userAgent.Contains("Linux") && userAgent.Contains("Android")) ||
                (userAgent.Contains("Safari") && (userAgent.Contains("iPad") || userAgent.Contains("iPhone") || userAgent.Contains("iOS")))))
            {
                Response.Redirect("~/Pages/Jogos/JogoAoVivoMobile.aspx?id=" + idPartida);
            }

            CarregaAcoesPartida();

            AtualizaLabelTitulo();
        }

        private void AtualizaLabelTitulo()
        {
            Partida partida = PartidaBLL.BuscarPartida(PartidaID);
            lblNomeJogador1.Text = partida.Jogador1.Nome;
            lblNomeTime1.Text = partida.Jogador1.TimeEscolhido;
            lblGols1.Text = partida.GolsJogador1.HasValue ? partida.GolsJogador1.Value.ToString() : "0";
            lblNomeJogador2.Text = partida.Jogador2.Nome;
            lblNomeTime2.Text = partida.Jogador2.TimeEscolhido;
            lblGols2.Text = partida.GolsJogador2.HasValue ? partida.GolsJogador2.Value.ToString() : "0";
        }

        protected void RepeaterItensAcoes_ItemDataBound(object _sender, RepeaterItemEventArgs _e)
        {
            if (_e.Item.ItemType != ListItemType.Item && _e.Item.ItemType != ListItemType.AlternatingItem) return;

            var acaoPartida = (AcaoPartida) _e.Item.DataItem;
            var image = (Image) _e.Item.FindControl("ImagemAcaoPartida");
            string imageURL = acaoPartida.AcaoRealizada == TipoAcaoPartida.MarcouGol
                                  ? "~/images/soccer_ball.png"
                                  : acaoPartida.AcaoRealizada == TipoAcaoPartida.RecebeuCartaoAmarelo
                                        ? "~/images/card_yellow.png"
                                        : acaoPartida.AcaoRealizada == TipoAcaoPartida.RecebeuCartaoVermelho
                                              ? "~/images/card_red.png"
                                              : "~/images/apito.png";
            image.ImageUrl = imageURL;
        }

        private void CarregaAcoesPartida()
        {
            var acoesPartida = new List<AcaoPartida>(PartidaBLL.BuscarTodasAcoesPartida(PartidaID));
            if (acoesPartida.Count > 0)
            {
                RepeaterItensAcoes.DataSource = acoesPartida;
                RepeaterItensAcoes.DataBind();
            }
            else
            {
                Response.Redirect("~/Pages/Default.aspx");
            }
            
        }

        protected void UpdateTimer_Tick(object _sender, EventArgs _e)
        {
            CarregaAcoesPartida();
            AtualizaLabelTitulo();
        }
    }
}